package com.kfm.base.oop2.pm;


/*
    Student is a Person
    extends 用于继承, 对现有类的一种扩展。
    class A extends B A 是子类/派生类,  B 父类 / 基类

    继承了些什么？  只要不是 private 修饰都可以被继承， 构造不能被继承。
    类只能单继承

    直接继承
    间接继承

    java 类如果没有用 extends 去显式的继承一个类，则这个类继承了 java.lang.Object 类
    Object 类是所有类的 父类 / 基类

    final 最终的， 被 final 修饰的类不能被继承
                 被 final 修饰的方法不能重写
                 被 final 修饰的变量不能重新赋值，称为 常量. 在声明时就赋值
                    引用数据类型可以修改字段(不是final)的值
        可以被继承的。

 */
public final class Student extends Person {

    // 学生学号
    private String id;

    private final int a;

    {
        a = 1;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getId(){
        return id;
    }

    /*
    重写(override 覆盖)：继承关系中，子类中有和父类方法同名同参同返回值类型的方法。子类重写了的父类的方法
        访问权限要相同或变大
        返回值类型要相同，是同一个类型的. 可以存在继承关系

     注解 @Override 标识重写
     */
    @Override
    void showInfo(){
        System.out.println("姓名：" + getName() + ", 性别： " + getGender() + ", 年龄: " + getAge() + ", 学号： " + id);
    }

}
